//package com.htx.zqs.blesmartmask.ui.base;
//
//import android.content.Context;
//import android.content.DialogInterface;
//import android.content.Intent;
//import android.content.pm.PackageManager;
//import android.content.res.Resources;
//import android.support.v4.app.FragmentActivity;
//import android.support.v4.content.ContextCompat;
//
//import com.htx.zqs.blesmartmask.R;
//import com.htx.zqs.blesmartmask.ui.callback.OnAndPermissionCallBack;
//import com.htx.zqs.blesmartmask.utils.AlertUtils;
//import com.htx.zqs.blesmartmask.utils.Constants;
//import com.htx.zqs.blesmartmask.utils.ToastUtils;
//import com.yanzhenjie.permission.Action;
//import com.yanzhenjie.permission.AndPermission;
//import com.yanzhenjie.permission.Permission;
//
//import java.util.ArrayList;
//import java.util.List;
//
//import timber.log.Timber;
//
///**
// * Created by KomoriWu
// * 权限检查
// * on 2019/2/17.
// */
//
//public abstract class BasePermissionActivity extends FragmentActivity {
//    public static final String TAG = BasePermissionActivity.class.getSimpleName();
//    public boolean isShowRefuse = true;
//    private List<String> mNoPerList;//没权限的集合
//
//    public void andPermissions(String[] permissions, final OnAndPermissionCallBack onAndPermissionCallBack) {
//        applyPermissions(onAndPermissionCallBack, permissions);
//    }
//
//    public void andPermissions(String permissions, final OnAndPermissionCallBack onAndPermissionCallBack) {
//        applyPermissions(onAndPermissionCallBack, permissions);
//    }
//
//    private void applyPermissions(final OnAndPermissionCallBack onAndPermissionCallBack,
//                                  final String... permissions) {
//        AndPermission.with(this)
//                .runtime()
//                .permission(permissions)
//                .onGranted(new Action<List<String>>() {
//                    @Override
//                    public void onAction(List<String> permissions) {
//                        // Storage permission are allowed.
//                        if (onAndPermissionCallBack != null) {
//                            onAndPermissionCallBack.onSuccess();
//                        }
//                    }
//                })
//                .onDenied(new Action<List<String>>() {
//                    @Override
//                    public void onAction(List<String> permissionsList) {
//                        // Storage permission are not allowed.
//                        Timber.e("用户拒绝了" + permissionsList + "权限");
//                        if (isShowRefuse) {
//                            showRefusePerDialog(permissionsList, permissions,
//                                    onAndPermissionCallBack);
//                        } else {
//                            ToastUtils.show(BasePermissionActivity.this,
//                                    "您已拒绝" + perToString(permissionsList) + "权限，" +
//                                            "该功能将暂时无法正常使用");
//                        }
//
//                        if (onAndPermissionCallBack != null) {
//                            onAndPermissionCallBack.onFailed();
//                        }
//                    }
//                })
//                .start();
//    }
//
//
//    private void showRefusePerDialog(List<String> permissionsList, final String[] permissions,
//                                     final OnAndPermissionCallBack onAndPermissionCallBack) {
//        final String permissionHint = "由于获取不了<font color='#F8C75E'>" + perToString(permissionsList) +
//                "</font>权限，该功能将暂时无法正常使用";
//        try {
//            AlertUtils.showAlertDialog(this, R.string.kindly_reminder_,
//                    R.string.common_iknow, R.string.go_authorization,
//                    permissionHint, new DialogInterface.OnClickListener() {
//                        @Override
//                        public void onClick(DialogInterface dialog, int which) {
//                            isShowRefuse = false;
//                            dialog.dismiss();
//                            switch (which) {
//                                case DialogInterface.BUTTON_POSITIVE:
//                                    reApplyPer(permissions, onAndPermissionCallBack);
//                                    break;
//                                case DialogInterface.BUTTON_NEGATIVE:
//
//                                    break;
//                            }
//
//                        }
//                    });
//        } catch (Exception e) {
//            e.printStackTrace();
//            ToastUtils.show(BasePermissionActivity.this,
//                    "您已拒绝" + perToString(permissionsList) + "权限，" +
//                            "该功能将暂时无法正常使用");
//        }
//    }
//
//    private void reApplyPer(String[] permissions, final OnAndPermissionCallBack onAndPermissionCallBack) {
//        AndPermission.with(this)
//                .runtime()
//                .permission(permissions)
//                .onGranted(new Action<List<String>>() {
//                    @Override
//                    public void onAction(List<String> permissions) {
//                        // Storage permission are allowed.
//                        if (onAndPermissionCallBack != null) {
//                            onAndPermissionCallBack.onSuccess();
//                        }
//                    }
//                })
//                .onDenied(new Action<List<String>>() {
//                    @Override
//                    public void onAction(List<String> permissions) {
//                        // Storage permission are not allowed.
//                        ToastUtils.show(BasePermissionActivity.this,
//                                "您已拒绝" + perToString(permissions) + "权限，" +
//                                        "该功能将暂时无法正常使用");
//                    }
//                })
//                .start();
//    }
//
//    /*
//     * sd卡与拍照权限申请
//     * */
//    public void applyCameraPer(OnAndPermissionCallBack onAndPermissionCallBack) {
//        andPermissions(Constants.permission1, onAndPermissionCallBack);
//    }
//
//    /**
//     * 判断权限集合
//     * permissions 权限数组
//     * return true-表示没有该权限  false-表示权限已开启
//     */
//    private boolean lacksPermissions(Context mContexts, String[] permissions) {
//        mNoPerList = new ArrayList<>();
//        for (String permission : permissions) {
//            if (lacksPermission(mContexts, permission)) {
//                mNoPerList.add(permission);
//            }
//        }
//        return mNoPerList.size() > 0;
//    }
//
//    /**
//     * 判断是否缺少权限
//     */
//    private boolean lacksPermission(Context mContexts, String permission) {
//        return ContextCompat.checkSelfPermission(mContexts, permission) !=
//                PackageManager.PERMISSION_DENIED;
//    }
//
//
//    private String perToString(List<String> permissions) {
//        String hint = Permission.transformText(BasePermissionActivity.this, permissions).
//                toString();
//        hint = hint.replace("，", "、");
//        hint = hint.replace(",", "、");
//        StringBuilder sb = new StringBuilder(hint);
//        if (sb.length() > 1) {
//            sb.delete(0, 1);
//            sb.delete(sb.length() - 1, sb.length());
//        }
//
//        return sb.toString();
//
//    }
//
//}
